package q1422_maxScore;

public class Solution {
    /*
    和2155几乎一样的题 但是2155需要找出分割的下标 而此题需要找出最大的分数 且必须要分成两个非空字串
    所以只能用遍历两次的方法：
    先遍历一次即可得到整个数组中一共有多少0和1
    然后再遍历一次 维护两个变量l和r 遇到0 ++l 遇到1 --r 根据l + r更新答案即可
     */
    public int maxScore(String s) {
        int len = s.length(), count_0 = 0, count_1 = 0;
        for (int i = 0; i < len; ++i) {
            if (s.charAt(i) == '0') ++count_0;
            else ++count_1;
        }
        int score = 0;

        int left = 0, right = count_1;
        for (int i = 0; i < len - 1; i++) {
            if (s.charAt(i) == '0') left++;
            else right--;
            if ((left + right) > score) score = left + right;
        }
        return score;
    }
}
